home *** CD-ROM | disk | FTP | other *** search
/ HyperLib 1997 Winter - Disc 1 / HYPERLIB-1997-Winter-CD1.ISO.7z / HYPERLIB-1997-Winter-CD1.ISO / オンラインウェア / COM / ProTERM Mac1.2a.sit / ProTERM Mac1.2a / Extras / Modem Tester < prev    next >
Text File  |  1996-07-21  |  4KB  |  207 lines

  1. //
  2. // Modem Tester Macro
  3. //
  4.  
  5. INT ok;
  6. STR msg, stat;
  7.  
  8. INT _slow, _fast;
  9. STR _af, _ad, _ac, __e, _q5, _q6;
  10. STR _an, __n, _bj, _bn, _bq, __w;
  11.  
  12. // make sure user wants to test
  13. ok = WIN_NOTE(2,'Are you ready to begin testing');
  14. IF (ok != 1) { GOTO quit; }
  15.  
  16. // step 1: find modem command speed
  17. msg = "";
  18. _slow = min_spd();
  19. _fast = max_spd();
  20. opt_spd(_slow, _fast);
  21.  
  22. // step 2: set the command flags
  23. IF (_slow || _fast) {
  24.  _ac = mdm_cmd("&C0");
  25.  _ad = mdm_cmd("&D0");
  26.  __e = mdm_cmd("E0");
  27.  _q5 = mdm_cmd("&Q5");
  28.  _q6 = mdm_cmd("&Q6");
  29.  _an = mdm_cmd("&N6");
  30.  __n = mdm_cmd("N1");
  31.  _bj = mdm_cmd("¥J1");
  32.  _bn = mdm_cmd("¥N3");
  33.  _bq = mdm_cmd("¥Q3");
  34.  __w = mdm_cmd("W1")
  35.  _af = mdm_cmd("&F");
  36. }
  37.  
  38. // try and determine modem type
  39.  IF (__e == "No") {
  40.   msg = "???";
  41.  } ELSE IF (_fast <= 300) {
  42.   msg = "300";
  43.  } ELSE If (_fast == 1200) {
  44.   msg = "1200";
  45.  } ELSE IF (_fast == 2400) {
  46.   msg = "2400";
  47.  } ELSE IF (_slow == _fast) {
  48.   msg = "FIXED";
  49.  } ELSE IF (_bn == "Yes" && _bj == "Yes" && _bq == "Yes") {
  50.   msg = "MNP";
  51.  } ELSE IF (_fast < 9600 || _af == "No") {
  52.   msg = "???";
  53.  } ELSE IF (_q5 == "Yes" && __n == "Yes" && __w == "Yes") {
  54.   msg = "V9600";
  55.  } ELSE IF (_q5 == "No" && _q6 == "Yes" && __n == "Yes") {
  56.   msg = "RPI";
  57.  } ELSE IF (_an == "Yes") {
  58.   msg = "USR";
  59.  } ELSE {
  60.   msg = "???";
  61.  }
  62.  
  63. // give recommendation
  64. WIN_NOTE(4,SWITCH(msg) {
  65.  CASE "300":
  66. {'Try configuring as:^M Generic-AT 300'}
  67.  CASE "1200":
  68. {'Try configuring as:^M Generic-AT 1200'}
  69.  CASE "2400":
  70. {'Try configuring as:^M Generic-AT 2400'}
  71.  CASE "9600":
  72. {'Try configuring as Generic-AT 9600. If high-speed
  73. connects fail, try Generic-AT Fixed-Speed instead.'}
  74.  CASE "FIXED":
  75. {'Try configuring as:^M Generic-AT Fixed-Speed'}
  76.  CASE "V9600":
  77. {'Try configuring as:^M Hayes Smartmodem V9600'}
  78.  CASE "MNP":
  79. {'Try configuring as:^M Generic-AT ¥Nx'}
  80.  CASE "USR":
  81. {'Try configuring as:^M US Robotics HST'}
  82.  CASE "RPI":
  83. {'Try configuring as:^M Generic-AT &Q6'}
  84.  CASE "???":
  85. {'Modem Tester is unable to determine the type of
  86. modem connected. If you need to contact InTrec
  87. Technical Support, please copy down the next page
  88. of testing results and have them available when
  89. you call or enclose them when you write.'}
  90.  default:
  91. {'There is no response from the modem. Make
  92. sure the modem is turned-on and connected
  93. to the modem port and try testing again.'}
  94. });
  95.  
  96. // show extra detail info
  97. IF (msg != "") {
  98.  stat = STR_FORMAT(
  99. 'Detailed Modem Testing Results: 
  100.  
  101. Speed: %d-%d,
  102.  &F: %s, &D: %s, &C: %s, E: %s
  103.  &Q5: %s, &Q6: %s, &N: %s, N: %s 
  104.  ¥J: %s, ¥N: %s, ¥Q: %s, W: %s',
  105.  _slow, _fast, _af, _ad, _ac, __e, _q5, _q6, _an, __n, _bj, _bn, _bq, __w);
  106.  WIN_NOTE(4,stat);
  107. };
  108.  
  109. quit:
  110.  ui_close("Modem Tester");
  111.  end;
  112.  
  113.  
  114. //
  115. // check command support
  116. //
  117. FUNC mdm_cmd(STR cmd)
  118. {
  119.  INT result;
  120.  INT retry = 3;
  121.  
  122.  WHILE (retry = retry-1) {
  123.   PR("AT"+cmd+"^m");
  124.   result = WT(300,"OK","ERROR");
  125.   WT(25);
  126.   IF (result == 1) { RETURN("Yes"); }
  127.   IF (result == 2) { RETURN("No"); }
  128.  }
  129.  RETURN("???");
  130. }
  131.  
  132.  
  133. //
  134. // find any modem command speed
  135. //
  136. FUNC any_spd()
  137. {
  138.  int spd;
  139.  
  140.  spd = 300;
  141.  WHILE (spd <= 38400) {
  142.   SES_SET(#termChan, "SPEED", STR_NUM(spd)+" bps");
  143.   PR("^m");
  144.   WT(25);
  145.   IF (mdm_cmd("E0V1") == "Yes") { RETURN(spd); }
  146.   spd = spd * 2;
  147.  }
  148.  RETURN(0);
  149. }
  150.  
  151.  
  152. //
  153. // find minimum modem command speed
  154. //
  155. FUNC min_spd()
  156. {
  157.  INT spd = any_spd();
  158.  if (!spd) { RETURN(0); }
  159.  
  160.  WHILE (1) {
  161.   IF (spd <= 300) { RETURN(300); }
  162.   SES_SET(#termChan, "SPEED", STR_NUM(spd/2)+" bps");
  163.   PR("^m");
  164.   WT(25);
  165.   IF (mdm_cmd("E0") != "Yes") { RETURN(spd); }
  166.   spd = spd / 2;
  167.  }  
  168. }
  169.  
  170. //
  171. // find maximum modem command speed
  172. //
  173. FUNC max_spd()
  174. {
  175.  INT spd = any_spd();
  176.  if (!spd) { RETURN(0); }
  177.  
  178.  WHILE (1) {
  179.   IF (spd >= 38400) { RETURN(38400); }
  180.   SES_SET(#termChan, "SPEED", STR_NUM(spd*2)+" bps");
  181.   PR("^m");
  182.   WT(25);
  183.   IF (mdm_cmd("E0") != "Yes") { RETURN(spd); }
  184.   spd = spd * 2;
  185.  }
  186. }
  187.  
  188.  
  189. //
  190. // set to optimum command speed
  191. //
  192. FUNC opt_spd(INT min, INT max)
  193. {
  194.  INT spd;
  195.  
  196.  spd = max;
  197.  if (spd > 9600) { spd = 9600; }
  198.  if (spd < min) { spd = min; }
  199.  
  200.  SES_SET(#termChan, "SPEED", STR_NUM(spd)+" bps");
  201.  PR("^m");
  202.  WT(25);
  203.  mdm_cmd("");
  204.  RETURN;
  205. }
  206.  
  207.